#!/bin/bash
#/system/bin/sh

#devfreq有4种对GPU频率的管理策略governor:
# 1. performance: GPU会固定工作在其支持的最高频率上，以追求最高性能
# 2. powersave: GPU会固定工作在其支持的最低频率上，以追求最低的功耗
# 3. userspace: 早期的管理策略，系统将变频策略的决策交给了用户态应用程序，并提供相应的接口供其使用
# 4. ondemand: userspace是用户态的检测，效率低，而ondemand则是一个完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的governor。

#设置power_flags:KGSL_PWRFLAGS_CLK_ON。当设置gpuclk时会判断这个标志有没有设置,如果设置了，设置的gpu频率才会生效
adb shell "echo 1 > /sys/class/kgsl/kgsl-3d0/force_clk_on"
#设置超时间隔，默认是80ms,该值是一个检查gpu是否为idle的时间间隔，即默认没80ms检查一次，如果gpu处于idle状态，当再次从idle状态唤醒后会重启governor，重新初始化GPU的频率
#这样即使我们设置了我们想要的频率，最后也会被覆盖掉，所以要把interval_timeout设置为很大
#idel_interval被设置成了很大，这样就不会suspend，resume了。
adb shell "echo 10000000 > /sys/class/kgsl/kgsl-3d0/idle_timer"
#这时devfreq会为Adreno重新选择governor,这里是performence,它会使使用GPU所支持的最大频率，而不考虑系统的负载
#默认的msm-adreno-tz机制会不停的动态更新频率，即使我们设置过频率也会被覆盖掉，这就是为什么直接设置频率无效的原因
#而如果改成performance机制，这样它会使得Adreno动态调整机制无效，我们的设置才会生效
adb shell "echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor"
#简单的设置GPU的频率，一般是200 000 000，320 000 000，450 000 000之间，如果不对就会选择这三者之一。
adb shell "echo 710000000 > /sys/class/kgsl/kgsl-3d0/gpuclk"


